<?php
/**
 * My curriculum vitae
 * Author : Zhang Jiadi@hackpar
 * Time : 2013年8月16日13:11:11
 * 本简历需要开启GD库
 */

error_reporting(0);
if(function_exists('imagecreate') != '1'){
    exit("GD library must be open");
}else{
	header("Content-type: image/png"); 
	$Programmer = new Programmer;
	$vitae = array();
	$vitae['Info'] = $Programmer->info();
	$vitae['Experience'] = $Programmer->Experience();
	$vitae['Introduction'] = $Programmer->Introduction();
	$vitae['Item'] = $Programmer->Item();
	new Img($vitae);
}
class Img{
	const imgWidth = '1700';	
	const imgHeight = '1600';	
	const font_file = "c:\\WINDOWS\\Fonts\\simhei.ttf";		//LINUX自己换字体
	
	function __construct($content){
		$img = imagecreate(Img::imgWidth, Img::imgHeight);	
		imagecolorallocate($img, 255, 255, 255);
		$color = imagecolorallocate($img,0,0,0);
		$this->table($img , $color);
		$this->photo($img , $color);
		$this->title($img , $color);
		$this->info($img , $content['Info'] , $color);
		$this->Introduction($img , $content['Introduction'] , $color);
		$this->Experience($img , $content['Experience'] , $color);
		$this->Item($img , $content['Item'] , $color);
		$this->wateryin($img , $color);
		imagepng($img);
	}
	
	public function table($img , $color){
		imageline($img , 300 , 50 , 300 , Img::imgHeight - 50 , $color);					//左边界
		imageline($img , Img::imgWidth - 300 , 50 , Img::imgWidth - 300 , Img::imgHeight - 50 , $color);	//右边界
		imageline($img , 300 , 50 , Img::imgWidth - 300 , 50 , $color);				//上边界
		imageline($img , 300 , Img::imgHeight - 50 , Img::imgWidth - 300 , Img::imgHeight - 50 , $color);				//下边界
		imageline($img , 300 , 130 , Img::imgWidth - 300 , 130 , $color);				//标题
		imageline($img , 300 , 190 , Img::imgWidth - 500 , 190 , $color);				//第一行
		imageline($img , 300 , 250 , Img::imgWidth - 500 , 250 , $color);				//第二行
		imageline($img , 300 , 310 , Img::imgWidth - 300 , 310 , $color);				//第三行
		imageline($img , 300 , 360 , Img::imgWidth - 300 , 360 , $color);				//第三行
		imageline($img , Img::imgWidth-500 , 130 , Img::imgWidth - 500 , 310 , $color);				//photo
		imageline($img , Img::imgWidth-1100 , 130 , Img::imgWidth - 1100 , 310 , $color);				//竖线
		imageline($img , Img::imgWidth-780 , 130 , Img::imgWidth - 780 , 310 , $color);				//竖线
		imageline($img , 300 , 710 , Img::imgWidth - 300 , 710 , $color);				//第四行(介绍)
		imageline($img , 300 , 760 , Img::imgWidth - 300 , 760 , $color);				//第四行(介绍)
		imageline($img , 300 , 1110 , Img::imgWidth - 300 , 1110 , $color);				//第五行(介绍)
		imageline($img , 300 , 1160 , Img::imgWidth - 300 , 1160 , $color);				//第四行(介绍)
	}
	
	public function photo($img , $color){
		imageellipse($img, 1260, 180, 60, 40,$color);				//左眼
		imageellipse($img, 1340, 180, 60, 40,$color);				//右眼
		imagearc($img, 1300, 180, 30, 20,30,150,$color);			//眼镜
		imagearc($img, 1350, 140, 80, 100,0,60,$color);
		imagearc($img, 1235, 130, 50, 110,100,160,$color);
		imagearc($img, 1300, 230, 100, 100, 20, 160,$color);		//以下是嘴巴
		imagearc($img, 1290, 240, 130, 20, 20, 125,$color);
		imagerectangle($img, 1290, 250, 1280, 260,$color);
		imagerectangle($img, 1305, 250, 1295, 260,$color);
		imagerectangle($img, 1310, 250, 1320, 260,$color);
	}
	
	public function title($img , $color){
		imagettftext($img, 20, 0, 780 ,100, $color, Img::font_file, '程序员简历');
		imagettftext($img, 20, 0, 790 ,345, $color, Img::font_file, '工作经历');
		imagettftext($img, 20, 0, 790 ,745, $color, Img::font_file, '项目经验');
		imagettftext($img, 20, 0, 790 ,1145, $color, Img::font_file, '个人简介');
	}
	
	public function info($img , $info , $color){
		foreach($info as $key=>$value){
			switch ($key){
				case "Name":
					imagettftext($img, 15, 0, 350 ,170, $color, Img::font_file, "{$key}:{$value}");		//姓名
					break;
				case "Age":
					imagettftext($img, 15, 0, 630 ,170, $color, Img::font_file, "{$key}:{$value}");		//年龄
					break;
				case "Gender":
					imagettftext($img, 15, 0, 950 ,170, $color, Img::font_file, "{$key}:{$value}");		//性别
					break;
				case "EnglisNname":
					imagettftext($img, 15, 0, 350 ,230, $color, Img::font_file, "{$key}:{$value}");		//English Name
					break;
				case "University":
					imagettftext($img, 15, 0, 630 ,230, $color, Img::font_file, "{$key}:{$value}");		//毕业院校
					break;
				case "Major":
					imagettftext($img, 15, 0, 950 ,230, $color, Img::font_file, "{$key}:{$value}");		//专业
					break;
				case "LivingPlace":
					imagettftext($img, 15, 0, 350 ,290, $color, Img::font_file, "{$key}:{$value}");		//现居地
					break;
				case "Phone":
					imagettftext($img, 15, 0, 630 ,290, $color, Img::font_file, "{$key}:{$value}");		//电话
					break;
				case "Email":
					imagettftext($img, 15, 0, 950 ,290, $color, Img::font_file, "{$key}:{$value}");		//Email
					break;
			}
		}
	}
	
	public function Introduction($img , $Introduction , $color){
		$str = explode('</br>' , $Introduction);
		foreach($str as $key=>$value){
			imagettftext($img, 14, 0, 350 ,1200+$a*35, $color, Img::font_file, $value);
			$a++;
		}
	}
	
	public function Experience($img , $Experience , $color){
		foreach($Experience as $key=>$value){
			imagettftext($img, 14, 0, 350 ,400+$a*35, $color, Img::font_file, $key);
			imagettftext($img, 14, 0, 750 ,400+$a*35, $color, Img::font_file, $value);
			$a++;
		}
	}
	
	public function Item($img , $Item , $color){
		$str = explode('</br>' , $Item);
		foreach($str as $key=>$value){
			imagettftext($img, 14, 0, 350 ,800+$a*35, $color, Img::font_file, $value);
			$a++;
		}
	}
	
	public function wateryin($img , $color){
		$str = 'by:hackpar';
		imagettftext($img, 14, 0, 1450 ,1550, $color, Img::font_file, $str);
	}
	
	
}


class Programmer{
	const Name = 'ZJD';
	const Gender = 'Male';
	const Age = '21';
	const Englishname = 'Hackpar';
	const University = "";
	const Major = 'Software';
	const LivingPlace = "Xi'an";
	const Phone = '';
	const Email = 'hackpar@gmail.com';
	
	public function info(){
		$info = array(
			'Name'			=>  Programmer::Name,
			'Gender'		=>  Programmer::Gender,
			'Age'			=>  Programmer::Age,
			'EnglisNname'	=>  Programmer::Englishname,
			'University'	=>  Programmer::University,
			'Major'			=>  Programmer::Major,
			'LivingPlace'	=>  Programmer::LivingPlace,
			'Phone'			=>  Programmer::Phone,
			'Email'			=>  Programmer::Email,
		);
		return $info;
	}
	
	public function Experience(){
		$exp = array();
		$exp['2011-04 to 2011-10'] = '';
		$exp['2012-02 to 2012-12'] = '';
		$exp['2013-03 to 2013-06'] = '';
		$exp['2013-07 to now'] = '';
		return $exp;
	}
	
	public function Introduction(){
		$int = '一个苦逼的PHP码农,没有Geek的技术,但是有一颗Geek的心.';
		return $int;
	}
	
	public function Item(){
		$item = '项目介绍';
		return $item;
	}
	
}


?>